package com.example.demo.javatest;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.LinkedList;
import java.util.List;

/**
 * @author ljh
 * @create 2020/3/30
 * @describe java 的参数传递是值传递 基数据类型的参数 传递的是值
 * 只不过对于引用类型参数，值的内容是对象的引用
 * 1、引用类型一般都是通过new关键字创建对象，然后把这个对象赋予给相应的变量，最常用的引用类型是String类型，它也比较特殊，可以直接通过关键字new来创建对象，也可以通过字符串直接赋值，比如：
 * Strings=newString("abc");
 * 2、基本类型就是直接赋值就可以了
 */
public class JavaValueTransTest {

    public static void main(String[] args) {
        int i=1;
        fun1(i);
        System.out.println(i);
        Model m=new Model(1,"111");
        fun2(m);
        System.out.println(m);
        List li=new LinkedList();
        li.add(111);
        fun3(li);
        System.out.println(li);
    }

    public static void fun1(int i){
        i=10;
    }

    public static void fun2(Model m){
        m.setId(2);
        m.setName("2222");
    }

    public static  void fun3(List<Integer> list){
        list.add(222);

    }

    @Data
    @NoArgsConstructor
    @AllArgsConstructor
    public static class Model{
        private int id;
        private String name;
    }
}
